﻿/*
 *	Copyright (c) 2009 Queensland University of Technology. All rights reserved.
 *	The QUT Bioinformatics Collection is open source software released under the 
 *	Microsoft Public License (Ms-PL): http://www.microsoft.com/opensource/licenses.mspx.
 */
using System;
using System.Collections.Generic;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using QUT.Bio.Util;

namespace QUT.Bio.SilverMap.ObjectModel {
	/// <summary>
	/// The data contract that must be satisfied by all data providers.
	/// <para>
	/// TODO: do I need to provide a finer granularity family of xxxChanged methods or will it be sufficient to rely on the DataProvider's LoadComplete method?
	/// </para>
	/// </summary>

	public interface IFeatureCollection {
		/// <summary>
		/// A list of sequences which provide a context for the features.
		/// </summary>

		IEnumerable<ILinearDomain> Domains {
			get;
		}

		/// <summary>
		/// A list of features that are involved in hits.
		/// </summary>

		IEnumerable<IFeature> Features {
			get;
		}

		/// <summary>
		/// A list of blast hits (HSPs)
		/// </summary>

		IEnumerable<Hit> Hits {
			get;
		}

		/// <summary>
		/// Get a reference to the intial query sequence, which nominally goes at the centre 
		/// of a SilverMap. Other map types (as yet conjectured) may not need this item.
		/// </summary>

		ILinearDomain InitialFocus {
			get;
		}

		/// <summary>
		/// Get a list consisting of the sequences that appear as a query in at least one hit in the
		/// collection.
		/// </summary>

		HashList<ILinearDomain> Focii {
			get;
		}
	}
}
